/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package com.losalpes.persistence.entity;

import java.io.Serializable;
import javax.persistence.CascadeType;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.ManyToOne;
import javax.persistence.NamedQueries;
import javax.persistence.NamedQuery;
import javax.persistence.SequenceGenerator;

/**
 *
 * @author Juan Ma
 */
@Entity
@NamedQueries(@NamedQuery(name="ItemCompra.findAll", query="select o from ItemCompra o"))
public class ItemCompra implements Serializable{

    @Id
    @GeneratedValue(strategy=GenerationType.SEQUENCE, generator="SEQ_ITEMS")
    @SequenceGenerator(name="SEQ_ITEMS", initialValue=1, sequenceName="seqItems")
    private long id;
    //@OneToOne(cascade=CascadeType.ALL)
    @ManyToOne(optional=false, fetch=FetchType.LAZY)
    private Mueble mueble;
    private double precioUnitario;
    private int cantidad;
    @ManyToOne(fetch=FetchType.LAZY, optional=false)
    private Compra compra;

    /**
     * Retorna la cantidad de unidades del mueble.
     * @return cantidad de unidades del mueble en el item del carro.
     */
    public int getCantidad() {
        return cantidad;
    }

    /**
     * Modifica la cantidad de unidades del mueble.
     * @param cantidad Cantidad de unidades del mueble en el item.
     */
    public void setCantidad(int cantidad) {
        this.cantidad = cantidad;
    }

    /**
     * Retorna el Mueble del item de carro de compras.
     * @return Objeto de tipo mueble del item de carro de compras.
     */
    public Mueble getMueble() {
        return mueble;
    }

    /**
     * Modifica el mueble del item de carro de compras.
     * @param mueble Objeto de tipo Mueble que va a pertenecer al item de carro de compras.
     */
    public void setMueble(Mueble mueble) {
        this.mueble = mueble;
    }

    /**
     * Retorna el precio total del item de carro de compras, es decir el precio del mueble por la cantidad del mismo.
     * @return double con el precio del item (cantidad * precio)
     */
    public double getPrecioItem(){
        return this.mueble.getPrecio() * this.cantidad;
    }

    /**
     * Retorna el precio unitario del mueble.
     * @return precio unitario del mueble
     */
    public double getPrecioUnitario() {
        return precioUnitario;
    }

    /**
     * Modifica el precio unitario del mueble.
     * @param precioUnitario precio unitario del mueble
     */
    public void setPrecioUnitario(double precioUnitario) {
        this.precioUnitario = precioUnitario;
    }

    public long getId() {
        return id;
    }

    public void setId(long id) {
        this.id = id;
    }

    public Compra getCompra() {
        return compra;
    }

    public void setCompra(Compra compra) {
        this.compra = compra;
    }

}
